'use strict'

module.exports = (app) => {
  const { router, controller, middleware } = app
  const { jwtAuth } = middleware.auth
  const { config } = app
  const { api } = controller

  const prefix = `/api`

  const userAuth = jwtAuth({
    jwtName: 'user',
    loginUrl: '/login',
    secret: config.jwt.secret + 'User',
    allowSession: true,
  })

  // 有传入token强制登录
  router.use(`${prefix}`, async (ctx, next) => {
    if (ctx.header.authorization) {
      await userAuth(ctx, next)
    } else {
      await next()
    }
  })

  /**
   * 中间件
   */
  router.use(`${prefix}`, middleware.api) // API 通用中间件

  /**
   * 系统服务
   */
  // router.get(`${prefix}/area`, api.area.areaList) // 省市区
  router.get(`${prefix}/qrcode`, api.qrcode.createQRCode) // 二维码
  router.post(`${prefix}/upload`, middleware.upload, api.upload.upload) // 上传
  router.get(`${prefix}/config/constant`, api.config.constant) // 常量配置
  router.get(`${prefix}/config/dict`, api.config.dict) // 字典
  router.get(`${prefix}/config/:configType`, api.config.show) // 配置
  // router.get(`${prefix}/puppeteer/screenshot`, api.puppeteer.screenshot) // 截图

  /**
   * 微信小程序接口
   */
  // router.post(`${prefix}/wechat/mini/login`, api.wechatMini.login) // 小程序登录
  // router.get(`${prefix}/wechat/mini/user/info`, userAuth, api.wechatMini.userInfo) // 小程序用户信息
  // router.post(`${prefix}/wechat/mini/bind-mobile`, userAuth, api.wechatMini.bindMobile) // 小程序-绑定手机号
  // router.get(`${prefix}/wechat/mini/scene/info`, api.wechatMini.sceneInfo) // 小程序-场景信息
  // router.get(`${prefix}/wechat/mini/access-token`, api.wechatMini.getAccessToken) // 微信小程序-获取AccessToken

  /**
   * 微信公众号
   */
  // router.get(`${prefix}/wechat/access-token`, api.wechat.getAccessToken) // 微信公众号-获取AccessToken
  router.get(`${prefix}/wechat/js-sdk`, api.wechat.jsSdk) // 微信公众号-JS SDK

  const userApi = api.user

  /**
   * 账号
   */
  router.post(`${prefix}/login`, userApi.userAccount.login) // 登录
  router.post(`${prefix}/yd/login`, userApi.userAccount.ydLogin) // 云店-token登录
  router.get(`${prefix}/refresh-token`, userAuth, userApi.userAccount.refreshToken) // 刷新
  router.post(`${prefix}/logout`, userAuth, userApi.userAccount.logout) // 退出
  router.get(`${prefix}/user/info`, userAuth, userApi.userAccount.getUserInfo) // 用户信息
  router.put(`${prefix}/user/info`, userAuth, userApi.userAccount.setUserInfo) // 用户信息
  router.post(`${prefix}/sms`, userApi.userAccount.sms) // 短息

  /**
   * 文章分类
   */
  router.get(`${prefix}/article/category`, api.articleCategory.index) // 文章分类-列表

  /**
   * 文章
   */
  router.get(`${prefix}/article`, api.article.index) // 文章-列表
  router.get(`${prefix}/article/:id`, api.article.show) // 文章-详情

  /**
   * 城市
   */
  router.get(`${prefix}/city`, api.city.index) // 城市列表

  /**
   * 门店
   */
  router.get(`${prefix}/store`, api.store.index) // 门店-列表
  router.get(`${prefix}/store/:id`, api.store.show) // 门店-详情

  /**
   * 活动
   */
  router.get(`${prefix}/activity/date`, api.activity.getActivityDate) // 活动-日期
  router.get(`${prefix}/activity/time`, api.activity.getActivityTime) // 活动-时间段

  /**
   * 我的活动
   */
  router.get(`${prefix}/user/activity`, api.userActivity.index) // 我的活动-预约
  router.get(`${prefix}/user/activity/:id`, api.userActivity.show) // 我的活动-详情
  router.post(`${prefix}/user/activity`, api.userActivity.create) // 我的活动-预约
  router.post(`${prefix}/user/activity/cancel`, api.userActivity.cancel) // 我的活动-预约
  router.post(`${prefix}/user/activity/comment`, api.userActivity.comment) // 我的活动-评论

  // 鉴定师
  router.get(`${prefix}/jds/verify`, api.jds.verify.index) // 我的活动-预约
  router.get(`${prefix}/jds/verify/stat`, api.jds.verify.stat) // 我的活动-统计
  router.get(`${prefix}/jds/verify/:id`, api.jds.verify.show) // 我的活动-详情
  router.put(`${prefix}/jds/verify/:id`, api.jds.verify.update) // 鉴定-修改
  router.post(`${prefix}/jds/verify`, api.jds.verify.verify) // 鉴定-修改

  router.get(`${prefix}/jds/user/verify`, api.jds.userVerify.index) // 我的鉴定-预约
  router.get(`${prefix}/jds/user/verify/:id`, api.jds.userVerify.show) // 我的鉴定-详情

  router.get(`${prefix}/jds/store`, api.jds.store.index) // 门店-列表

  router.get(`${prefix}/qq-map/translate`, api.qqMap.translate) // 腾讯地图-坐标转换
  router.get(`${prefix}/qq-map/geocoder`, api.qqMap.geocoder) // 腾讯地图-逆地址解析
}
